package com.cinema.dao;

import com.cinema.model.Ticket;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

/**
 * 票务数据访问接口
 */
public interface TicketDao {
    
    /**
     * 保存票务
     */
    boolean save(Ticket ticket);
    
    /**
     * 根据票号查找票务
     */
    Optional<Ticket> findById(String ticketId);
    
    /**
     * 获取所有票务
     */
    List<Ticket> findAll();
    
    /**
     * 根据排片ID查找票务
     */
    List<Ticket> findByScheduleId(String scheduleId);
    
    /**
     * 根据日期范围查找票务
     */
    List<Ticket> findByDateRange(LocalDateTime startDate, LocalDateTime endDate);
    
    /**
     * 获取未退票的票务
     */
    List<Ticket> findNonRefundedTickets();
    
    /**
     * 获取已退票的票务
     */
    List<Ticket> findRefundedTickets();
    
    /**
     * 更新票务信息
     */
    boolean update(Ticket ticket);
    
    /**
     * 删除票务
     */
    boolean deleteById(String ticketId);
    
    /**
     * 检查票号是否存在
     */
    boolean existsById(String ticketId);
}